package cn.terminus.client.customer.contractselldefypaymentoverdueinfo.service;

import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoNewParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoEditParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoQueryParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoDeleteParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.param.ContractSellDefyPaymentOverdueInfoGetsParam;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.result.ContractSellDefyPaymentOverdueInfoResult;

import cn.terminus.result.common.result.TerminusResult;
import cn.terminus.result.common.page.TerminusPageAble;
import cn.terminus.result.common.page.TerminusPageInfo;
import cn.terminus.result.common.exception.DataAccessException;
import cn.terminus.result.common.exception.ServiceException;
import cn.terminus.result.common.context.TerminusCallContext;

import java.util.List;

/**
 * 合同付款违约(ContractSellDefyPaymentOverdueInfo)表服务接口
 *
 * @author makejava
 * @since 2021-07-21 11:18:48
 */
public interface ContractSellDefyPaymentOverdueInfoService {

    /**
     * 新增
     *
     * @param param
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<String> add(ContractSellDefyPaymentOverdueInfoNewParam param, TerminusCallContext context) throws ServiceException;

    /**
     * 更新
     *
     * @param param
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<Boolean> update(ContractSellDefyPaymentOverdueInfoEditParam param, TerminusCallContext context) throws ServiceException;


    /**
     * gets
     *
     * @param param
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<List<ContractSellDefyPaymentOverdueInfoResult>> gets(ContractSellDefyPaymentOverdueInfoGetsParam param, TerminusCallContext context) throws ServiceException;

    /**
     * 删除
     *
     * @param param
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<Boolean> delete(ContractSellDefyPaymentOverdueInfoDeleteParam param, TerminusCallContext context) throws ServiceException;

    /**
     * 查询
     *
     * @param param
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<List<ContractSellDefyPaymentOverdueInfoResult>> query(ContractSellDefyPaymentOverdueInfoQueryParam param, TerminusCallContext context) throws ServiceException;

    /**
     * 分页查询
     *
     * @param param
     * @param page
     * @param context
     * @return
     * @throws ServiceException
     */
    TerminusResult<TerminusPageAble<ContractSellDefyPaymentOverdueInfoResult>> page(ContractSellDefyPaymentOverdueInfoQueryParam param, TerminusPageInfo page, TerminusCallContext context) throws ServiceException;
}
